package com.baike.service.impl;

import com.baike.entity.ContentVo;
import com.baike.entity.TbContent;
import com.baike.mapper.TbContentMapper;
import com.baike.service.ITbContentService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Date;
import java.util.List;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author x_FG
 * @since 2021-10-30
 */
@Service
public class TbContentServiceImpl extends ServiceImpl<TbContentMapper, TbContent> implements ITbContentService {

    @Autowired
    private TbContentMapper contentMapper;

    // 条件查询-分栏,时间(前台展示)
    @Override
    public ContentVo getFrontInfo(String format) {
        List<TbContent> contentList = contentMapper.selectFrontList(format);
        TbContent content = contentMapper.selectFrontLists(format);
        ContentVo contentVo = new ContentVo();
        contentVo.setContent(content);
        contentVo.setContentList(contentList);
        return contentVo;
    }

    // 广告文件上传查询某个时段是否存在(教师投放)
    @Override
    public boolean getThinkTimeInfo(Integer id, Date createTime, Date updateTime) {
        if (id==1){ //
            // 查询出 最大的结束时间的四条
            List<TbContent> contentList = contentMapper.selectCreate(id);
            int i = 0;
            boolean b = false;
            for (TbContent content : contentList) {
                b = content.getUpdateTime().getTime() < createTime.getTime()+1;
                if (b==false){
                    i++;
                }
                if (i<=4 || b){
                    return true;
                }
            }
        }else {
            TbContent content = contentMapper.selectCreateById(id);
            boolean b = content.getUpdateTime().getTime() < createTime.getTime()+1;
            return b;
        }
        return false;
    }
    // 广告的审核/上下架状态修改
    @Override
    public boolean updateStatusInfo(Integer id, Integer status) {
        return contentMapper.updateStatusInfo(id,status)>0;
    }

    @Override
    public boolean updateContentInfo(TbContent tbContent) {
        return contentMapper.updateById(tbContent)>0;
    }

    @Override
    public boolean insertContentInfo(TbContent tbContent) {
        return contentMapper.insert(tbContent)>0;
    }

    // 文件上传方法
//    @Override
//    public String fileUpload(InputStream inputStream) {
//        // yourEndpoint填写Bucket所在地域对应的Endpoint。
//        // 以华东1（杭州）为例，Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
//        String http = "https://";
//        String endpoint = "oss-cn-beijing.aliyuncs.com";      // oss全球有很多服务器   我们需要上传到那个地区的服务器上
//        // 阿里云账号AccessKey拥有所有API的访问权限，风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维，请登录RAM控制台创建RAM用户。
//        String accessKeyId = "LTAI5tEVQsgkbksvSgctnbWY";
//        String accessKeySecret = "bEAnAFBbm5hDubJZuA6bUL7fG1tCNV";
//
//        String bucketName = "dongdongshop-x-fg0";
//        // 创建OSSClient实例。
//        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
//        // 填写字符串。
////        String content = "Hello OSS";
//        // 转换成流的方式
//        InputStream stream = inputStream;
//
//        //
//        String filename = UUID.randomUUID().toString()+".jpg";
//
//        System.out.println(Thread.currentThread().getName());
//
//
//        // 创建PutObjectRequest对象。
//        // 依次填写Bucket名称（例如examplebucket）和Object完整路径（例如exampledir/exampleobject.txt）。Object完整路径中不能包含Bucket名称。
//        PutObjectRequest putObjectRequest =
//                new PutObjectRequest(bucketName, filename, stream);
//        String url = http + bucketName+ "." + endpoint + "/" + filename;
//
//        // 如果需要上传时设置存储类型和访问权限，请参考以下示例代码。
//        // ObjectMetadata metadata = new ObjectMetadata();
//        // metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS, StorageClass.Standard.toString());
//        // metadata.setObjectAcl(CannedAccessControlList.Private);
//        // putObjectRequest.setMetadata(metadata);
//
//        // 上传字符串。
//        ossClient.putObject(putObjectRequest);
//
//        // 关闭OSSClient。
//        ossClient.shutdown();
//        return url;
//    }
}
